@是墙 = @【#序】｛
    #序 小于 20
    或
    #序 大于等于 380
    或
    #序 模 20 等于 0
    或
    #序 模 20 等于 19  
｝
@随机食物 = @【】｛
    #序：0
    执行 ｛
         #序 = #数学库@随机数【400】 
    ｝直到 
    （取反 @是墙【#序】） 且 （@查找【#蛇集合，#序】 小于 0）
    返回 #序
｝

#运行状态 = 真
#蛇集合 = 【110,109,108】
#食物 = 275
#方向 = 2
#下一方向 = 2

#窗 = @生成图形、《窗口 #宽=410，#高=440，#标题=“贪吃蛇”》
#单元集合=【】
当 #行=0，#行 小于 20，#行 自加 1 ｛
     当 #列=0，#列 小于 20，#列 自加 1 ｛
        #单元：@生成图形、《面板 #宽=20，#高=20，#X=#列*20，#Y=#行*20》 
        @追加【#单元集合，#单元】
    ｝
｝

@初始化 = @【】｛
    当 #序：0，#序 小于 400，#序 自加 1 ｛
        如果 @是墙【#序】｛
            #单元集合#序#边框色 = “#009933” 
            #单元集合#序#边框宽 = 2
        ｝ 否则 ｛
             #单元集合#序#背景色 = “white”
        ｝
    ｝

    遍历 #蛇集合 为 #序 ｛
        #单元集合#序#背景色 = “#333333” 
    ｝
    #单元集合#食物#背景色 = “Red”
｝
@初始化【】

#窗@加子集、#单元集合
#窗@键盘按下命令 = @【#按键】｛
    如果 #按键 等于 “Up”｛
        如果 #方向 不等于 3 ｛
            #下一方向 = 1
        ｝  
    ｝再则 #按键 等于 “Right”｛
        如果 #方向 不等于 4 ｛
            #下一方向 = 2
        ｝  
    ｝再则 #按键 等于 “Down”｛
        如果 #方向 不等于 1 ｛
            #下一方向 = 3
        ｝  
    ｝再则 #按键 等于 “Left” ｛
        如果 #方向 不等于 2 ｛
            #下一方向 = 4
        ｝  
    ｝
    
    如果 #运行状态 等于 假 且 #按键 等于 “Space” ｛
         #蛇集合 = 【110,109,108】
         #方向 = 2
         #下一方向 = 2
         #食物 = @随机食物【】
         @初始化【】
         #运行状态 = 真
    ｝
｝

@显示窗口、#窗

#定时器 = @定时任务【300，｛
    如果 取反 #运行状态 ｛返回 空｝
    #头： #蛇集合#0
    #方向 = #下一方向
    如果 #方向 等于 1 ｛
        #头 = #头 - 20 
    ｝再则 #方向 等于 2 ｛
        #头 = #头 + 1 
    ｝再则 #方向 等于 3 ｛
        #头 = #头 + 20 
    ｝再则 #方向 等于 4 ｛
        #头 = #头 -1 
    ｝
    
    如果 @是墙【#头】 或 （@查找【#蛇集合，#头】 大于等于 0）｛
        #运行状态 = 假 
        返回 空
    ｝
    
    #单元集合#头#背景色 = “#333333”
    @插入【#蛇集合，0，#头】

    如果 #头 等于 #食物 ｛
        #食物 = @随机食物【】
        #单元集合#食物#背景色 = “Red”
    ｝否则｛
        #尾 = @取出【#蛇集合，@取长度【#蛇集合】-1】
        #单元集合#尾#背景色 = “white”
    ｝
    
    
    
｝】

@启动定时任务、#定时器








